package com.kitty.common.schedule.task;

import com.kitty.common.schedule.ScheduledServiceNew;
import com.kitty.common.schedule.entity.SpringScheduledCron;
import com.kitty.common.schedule.service.SpringScheduledCronService;
import com.kitty.common.utils.SpringUtils;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.text.SimpleDateFormat;
import java.util.Date;

public interface ScheduledOfTask extends Runnable {
     final Logger logger = LoggerFactory.getLogger(ScheduledOfTask.class);

    /**
     * 定时任务方法
     */
    void execute();
    /**
     * 实现控制定时任务启用或禁用的功能
     */
    @Override
    default void run() {
        SpringScheduledCronService repository = SpringUtils.getBean(SpringScheduledCronService.class);
        SpringScheduledCron scheduledCron = repository.findByCronKey(this.getClass().getName()).get(0);
        logger.info("启动定时任务："+this.getClass().getName());
        if ("0".equals(scheduledCron.getStatus())) {
            // 任务是禁用状态
            return;
        }
        if(this.getClass().getName().contains("ChouJiangRankTask") || this.getClass().getName().contains("ChongZhiRankTask") || this.getClass().getName().contains("ShiDaoTask")  || this.getClass().getName().contains("DaRiJinWuTask")){
            execute();
            return;
        }
        String start = scheduledCron.getCron_strat();
        String end = scheduledCron.getCron_end();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
        String now = sdf.format(new Date());
        if(now.compareTo(start) >= 0  && now.compareTo(end) <= 0){
            execute();
        }

    }

}
